package com.ganzalang.gmall.learning.netty.nio;

import lombok.extern.slf4j.Slf4j;

import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;

/**
 * @description: NIO通信的客户端
 * @author: Ganzalang
 * @Date 2021/7/14 9:31
 */
@Slf4j
public class NIOClient {

    public static void main(String[] args) throws Exception{
        // 得到一个网络通道
        SocketChannel socketChannel = SocketChannel.open();
        // 设置非阻塞
        socketChannel.configureBlocking(false);
        // 提供服务器端的ip和端口
        InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1", 6666);

        // 连接服务器
        if (!socketChannel.connect(inetSocketAddress)) {
            while(!socketChannel.finishConnect()) {
                log.info("因为连接需要时间，客户端不会阻塞，可以做其他工作");
            }
        }

        // 连接成功则发送数据
        String str = "hello, 尚硅谷";
        ByteBuffer byteBuffer = ByteBuffer.wrap(str.getBytes());
        // 发送数据，将数据写入通道
        socketChannel.write(byteBuffer);
        // 为了让代码停在这，用System.in.read
        System.in.read();
    }
}
